package sma.organizations;

import org.janusproject.kernel.crio.core.CRIOContext;
import org.janusproject.kernel.crio.core.Organization;

import sma.organizations.roles.Decisive;
import sma.organizations.roles.DecisiveMassCenter;
import sma.organizations.roles.Goal;
import sma.organizations.roles.Obstacle;
import sma.organizations.roles.Repulsive;

/**
 * VirtualEnvironnement est l'organisation qui correpond à l'environnment virtuel.
 * Les roles de l'organisation sont : 
 * Goal
 * Obstacles
 * Decision
 * 
 * Cette organization est définit tel quel depuis la verison 0.2, avant l'environnement ne contenait que les 
 * PositiveAgent et les NegativeAgent, qui n'existent plus
 * 
 * @author Etienne Sainton
 * @author Arnaud Schaeffer
 * @version 0.2
 * @since 0.1
 */
public class VirtualEnvironmentOrga extends Organization {
	/**
	 * Constructeur. Celui cid oit absolument etre en public pour etre
	 * joignable, et donc permettre d'activer les roles de l'orga. C'est ici que
	 * nous declarons quels roles appartiennent a l'organisation, en l'occurence
	 * : Goal
	 * 
	 * @param crioContext L'ensemble CRIO dans lequel évoluent les agents
	 */
	public VirtualEnvironmentOrga(CRIOContext crioContext) {
		super(crioContext);

		this.addRole(Decisive.class);
		this.addRole(Repulsive.class);
		this.addRole(DecisiveMassCenter.class);
		this.addRole(Obstacle.class);
		this.addRole(Goal.class);
	}

}
